From: robert.mader@collabora.com Date: Tue, 30 May 2023 18:23:14 +0000 (+0200) Subject: screencastService: Fix 'pipeline' option X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~337^2~2^2~55 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=e1145defa9b27839607c26cf9962b938d7eef8f0;p=gnome-shell.git screencastService: Fix 'pipeline' option When introducing the pipeline fallback mechanism, support for defining a custom pipeline was unintentionally dropped, breaking extensions such as EasyScreenCast. Fixes 9cb40c4814b6be908edde4fb77a8d900a4cac51a Part-of: --- diff --git a/js/dbusServices/screencast/screencastService.js b/js/dbusServices/screencast/screencastService.js index 6ab92b53e..eda5c8293 100644 --- a/js/dbusServices/screencast/screencastService.js +++ b/js/dbusServices/screencast/screencastService.js @@ -87,6 +87,7 @@ var Recorder = class extends Signals.EventEmitter { throw e; } + this._pipelineString = null; this._framerate = DEFAULT_FRAMERATE; this._drawCursor = DEFAULT_DRAW_CURSOR; @@ -234,6 +235,23 @@ var Recorder = class extends Signals.EventEmitter { } } + *_getPipelineConfigs() { + if (this._pipelineString) { + yield { + pipelineString: + `capsfilter caps=video/x-raw,max-framerate=%F/1 ! ${this._pipelineString}`, + }; + return; + } + + const fallbackSupported = + Gst.Registry.get().check_feature_version('pipewiresrc', 0, 3, 67); + if (fallbackSupported) + yield* PIPELINES; + else + yield PIPELINES.at(-1); + } + startRecording() { return new Promise((resolve, reject) => { this._startRequest = {resolve, reject}; @@ -256,10 +274,7 @@ var Recorder = class extends Signals.EventEmitter { this._nodeId = nodeId; this._pipelineState = PipelineState.STARTING; - const fallbackSupported = - Gst.Registry.get().check_feature_version('pipewiresrc', 0, 3, 67); - this._pipelineConfigs = fallbackSupported - ? PIPELINES.values() : [PIPELINES.at(-1)].values(); + this._pipelineConfigs = this._getPipelineConfigs(); this._tryNextPipeline(); }); this._sessionProxy.StartSync();